package cc.zy.base.businesses.mapper;

import cc.zy.base.businesses.entity.Notice;
import cc.zy.base.businesses.entity.NoticeUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 通知表 Mapper
 *
 * @author 杨东豪
 * @date 2021-01-26
 */
public interface NoticeMapper extends BaseMapper<Notice> {

    /**
     * 查找用户详细信息
     *
     * @param page   分页对象
     * @param notice 用户对象，用于传递查询条件
     * @return Ipage
     * @author 赵佳伟
     * @date 2021-01-26
     */
    <T> IPage<Notice> findNoticeDetailPage(Page<T> page, @Param("notice") Notice notice);

    /**
     * 查询通知总数
     *
     * @param notice 用户对象，用于传递查询条件
     * @return 通知总数
     */
    long countNoticeDetail(@Param("notice") Notice notice);

    /**
     * 创建人查学生
     *
     * @param noticeId 通知id
     * @return List<Notice>
     */
    List<Notice> findCreatIdByUserId(Integer noticeId);

    /**
     * 查学生id
     *
     * @param noticeId 通知id
     * @return List<Integer>
     */
    List<Integer> findUserIdsByUserId(Integer noticeId);


    /**
     * 插入noticeUser
     *
     * @param noticeUser 通知人对象，用于传递查询条件
     * @return int
     */
    int insertNoticeUser(@Param("noticeUser") NoticeUser noticeUser);

    /**
     * 通过id查询通知信息
     *
     * @param noticeId 通知id
     * @return Notice
     */
    Notice findNoticeById(Integer noticeId);

    /**
     * 修改通知
     *
     * @param notice 通知人对象，用于传递查询条件
     * @return int
     */
    int updateNoticeByidy(Notice notice);

    /**
     * 微信查询消息列表总数
     *
     * @param notice 用户对象，用于传递查询条件
     * @return 通知总数
     */
    long wxNoticeListCount(@Param("userId")String userId, @Param("identity")String identity, @Param("batchId")Integer batchId, @Param("studyTypeId")Integer studyTypeId, @Param("tel")String tel);

    /**
     * 微信查询消息列表
     *
     * @param noticeId 通知id
     * @return List<Notice>
     */
    List<Notice> wxNoticeListPage(@Param("userId")String userId, @Param("identity")String identity, @Param("batchId")Integer batchId, @Param("studyTypeId")Integer studyTypeId, @Param("tel")String tel, @Param("startNumber")Integer startNumber, @Param("endNumber")Integer endNumber);

    /**
     * 修改通知状态
     *
     * @param userId 通知人对象
     * @param msgId 通知
     * @return int
     */
    int updateNoticeReadStatus(@Param("userId")String userId, @Param("msgId")Integer msgId, @Param("identity")String identity, @Param("batchId")Integer batchId, @Param("studyTypeId")Integer studyTypeId, @Param("tel")String tel, @Param("stuFlag")String stuFlag);

    /**
     * 查公海学生id
     *
     * @param noticeId 通知id
     * @return List<Integer>
     */
    List<Integer> findUserIdsByUserIdPool(Integer noticeId);



    /**
     * 微信查询消息列表
     *
     * @param noticeId 通知id
     * @return List<Notice>
     */
    List<NoticeUser> findShareNoticeIsShow(@Param("noticeId")String noticeId, @Param("stuFlag")String stuFlag, @Param("openId")String openId);

    /**
     * 修改通知状态
     *
     * @param openId 通知人对象
     * @param msgId 通知
     * @return int
     */
    int updateShareNoticeReadStatus(@Param("openId")String openId, @Param("msgId")Integer msgId, @Param("stuFlag")String stuFlag);

}
